﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

using modActor;
using modUtileria;
using modDatos;
using modLanGame;

using System.Threading;

namespace modElenco.LoadGame
{
    public class CLoadGame : CActor
    {
        CLoadGame_Datos myData;
        int linea;
        Rectangle pos;
        Rectangle cuadrante;

        Vector2 posTexto;
        string texto;
        SpriteFont fuente;

        Thread hiloCliente;        

        public CLoadGame()
        {
            base.init();
            myData = new CLoadGame_Datos();

            posTexto = new Vector2(300, 300);
            fuente = SCutileria.darFuente("fuenteTest");


            data.escenarioDatos.primarykey = "Load";

            myData.Linea = new Texture2D[8];

            myData.Linea[0] = SCutileria.darTextura2D("GifLoad/gifLoad0");
            myData.Linea[1] = SCutileria.darTextura2D("GifLoad/gifLoad1");
            myData.Linea[2] = SCutileria.darTextura2D("GifLoad/gifLoad2");
            myData.Linea[3] = SCutileria.darTextura2D("GifLoad/gifLoad3");
            myData.Linea[4] = SCutileria.darTextura2D("GifLoad/gifLoad4");
            myData.Linea[5] = SCutileria.darTextura2D("GifLoad/gifLoad5");
            myData.Linea[6] = SCutileria.darTextura2D("GifLoad/gifLoad6");
            myData.Linea[7] = SCutileria.darTextura2D("GifLoad/gifLoad7");

            myData.frameActual = 1;
            myData.frameForLine = 4;
            myData.frameTotal = 32;

            myData.direccionSprite = 1;

            //iniciamos el SRV o CLI o ambos...
            if(_BlackGlobal.ParametrosGameRun[0] == "-S")
            {
                CServ_WorkGame.Crear(_BlackGlobal.ParametrosGameRun[1], int.Parse(_BlackGlobal.ParametrosGameRun[2]));
                CServ_WorkGame.EsperarConecciones();
                //el redireccionamiento espera a que las conecciones terminen
            }

            CCliente.Init(_BlackGlobal.ParametrosGameRun[1]);
            hiloCliente = new Thread(new ThreadStart(CCliente.Conectar2));            
            hiloCliente.Start();

        }

        public override void ensayar(GameTime gameTime)
        {
            int posicion = myData.frameActual % myData.frameForLine;
            linea = (int)myData.frameActual / myData.frameForLine;

            pos = new Rectangle(0, 0, 500, 500);
            cuadrante = new Rectangle((posicion * 500), 0, 500, 500);

            if (myData.direccionSprite > 0)
            {
                myData.frameActual++;
                if (myData.frameActual >= 32)
                {
                    myData.frameActual = 0;
                    myData.direccionSprite = 1;
                }
            }
            else if (myData.direccionSprite < 0)
            {
                myData.frameActual--;
                if (myData.frameActual <= 0)
                {
                    myData.frameActual++;
                    myData.direccionSprite = 1;
                }
            }

            texto = "Esperando jugadores...";

            if (_BlackGlobal.ParametrosGameRun[0] == "-S")
            {
                texto = "Esperando Jugadores. \n Jugadores Conectados: " + CServ_WorkGame.servidor.data.coneccionEntrantes + " / "+ CServ_WorkGame.servidor.data.maxConc;
            }


            if (CCliente.empesarJuego == true)
            {               
                SCDirector.pasarEscena("Jugar");
            }
        }

        public override void drawInEscenary(ref SpriteBatch sprite)
        {           
            sprite.Draw(myData.Linea[linea], pos, cuadrante, Color.White);
            sprite.DrawString(fuente, texto, posTexto, Color.DarkBlue);
        }



    }
}
